#ifndef DETALHEITEM_H
#define DETALHEITEM_H

#include <QObject>
#include <QDateTime>
#include <QVariant>
#include <QtDeclarative>
#include "complementodetalheitem.h"

class DetalheItem : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QList<QObject*> complementos READ getComplementos NOTIFY complementosChanged)

public:
    enum ENUM_DETALHE_ROLES {
        IdRole = Qt::UserRole + 1,
        DateRole,
        DescriptionRole,
        StatusRole,
        EntregueRole,
        ComplementosRole
        };
    explicit DetalheItem(QObject *parent = 0);    
    QVariant data(int role);

    static QHash<int, QByteArray> roleNames();

    QList<QObject*> &getComplementos();
    ~DetalheItem();

    int getId();
    int getIdTrack();
    QDateTime getData();
    QString getDescricao();
    QString getStatus();
    bool getEntregue();

    void setId(int id);
    void setIdTrack(int id);
    void setData(const QDateTime &data);
    void setDescricao(const QString &dado);
    void setStatus(const QString &dado);

signals:
    void complementosChanged();

private:
    int _id, _idTrack;
    QDateTime _data;
    QString _descricao, _status;
    QList<QObject*> _complementos;

public slots:
    void addComplemento(int idTrack, int idDetalhe, ComplementoDetalheItem* item);

};

inline QList<QObject*> &DetalheItem::getComplementos() {
    qDebug() << "retornando os complementos " << _complementos.count();
    return _complementos;
}

inline int DetalheItem::getId() { return _id; }
inline int DetalheItem::getIdTrack() { return _idTrack; }
inline QDateTime DetalheItem::getData() { return _data; }
inline QString DetalheItem::getDescricao() { return _descricao; }
inline QString DetalheItem::getStatus() { return _status; }
inline bool DetalheItem::getEntregue() {
    return _status.toLower() == QString("Entrega Efetuada").toLower();
}

inline void DetalheItem::setId(int id) { _id = id; }
inline void DetalheItem::setIdTrack(int id) { _idTrack = id; }
inline void DetalheItem::setData(const QDateTime &data) { _data = data; }
inline void DetalheItem::setDescricao(const QString &dado) { _descricao = dado; }
inline void DetalheItem::setStatus(const QString &dado) { _status = dado; }

Q_DECLARE_METATYPE(DetalheItem*)

#endif // DETALHEITEM_H
